12 research outputs found

    Management Aspects of Software Clone Detection and Analysis

    Get PDF
    Copying a code fragment and reusing it by pasting with or without minor modifications is a common practice in software development for improved productivity. As a result, software systems often have similar segments of code, called software clones or code clones. Due to many reasons, unintentional clones may also appear in the source code without awareness of the developer. Studies report that significant fractions (5% to 50%) of the code in typical software systems are cloned. Although code cloning may increase initial productivity, it may cause fault propagation, inflate the code base and increase maintenance overhead. Thus, it is believed that code clones should be identified and carefully managed. This Ph.D. thesis contributes in clone management with techniques realized into tools and large-scale in-depth analyses of clones to inform clone management in devising effective techniques and strategies. To support proactive clone management, we have developed a clone detector as a plug-in to the Eclipse IDE. For clone detection, we used a hybrid approach that combines the strength of both parser-based and text-based techniques. To capture clones that are similar but not exact duplicates, we adopted a novel approach that applies a suffix-tree-based k-difference hybrid algorithm, borrowed from the area of computational biology. Instead of targeting all clones from the entire code base, our tool aids clone-aware development by allowing focused search for clones of any code fragment of the developer's interest. A good understanding on the code cloning phenomenon is a prerequisite to devise efficient clone management strategies. The second phase of the thesis includes large-scale empirical studies on the characteristics (e.g., proportion, types of similarity, change patterns) of code clones in evolving software systems. Applying statistical techniques, we also made fairly accurate forecast on the proportion of code clones in the future versions of software projects. The outcome of these studies expose useful insights into the characteristics of evolving clones and their management implications. Upon identification of the code clones, their management often necessitates careful refactoring, which is dealt with at the third phase of the thesis. Given a large number of clones, it is difficult to optimally decide what to refactor and what not, especially when there are dependencies among clones and the objective remains the minimization of refactoring efforts and risks while maximizing benefits. In this regard, we developed a novel clone refactoring scheduler that applies a constraint programming approach. We also introduced a novel effort model for the estimation of efforts needed to refactor clones in source code. We evaluated our clone detector, scheduler and effort model through comparative empirical studies and user studies. Finally, based on our experience and in-depth analysis of the present state of the art, we expose avenues for further research and development towards a versatile clone management system that we envision

    CSCI 6990

    Get PDF
    There are a number of different aspects of software engineering and software development. Software engineering is not entirely about source code. Like any industrial product, a software product is also developed undergoing a disciplined process and engineering techniques. This course emphasizes on software process, in particular the agile development process, which has drawn tremendous interests and adoption in the industry over the last decade

    A multi-phase approach to university course timetabling

    Get PDF
    ix, 117 leaves ; 29 cmCourse timetabling is a well known constraint satisfaction optimization (CSOP) problem, which needs to be solved in educational institutions regularly. Unfortunately, this course timetabling problem is known to be NP-complete [7, 39]. This M.Sc. thesis presents a multi-phase approach to solve the university level course timetabling problem. We decompose the problem into several sub-problems with reduced complexity, which are solved in separate phases. In phase-1a we assign lectures to professors, phase-1b assigns labs and tutorials to academic assistances and graduate assistants. Phase-2 assigns each lecture to one of the two day-sequences (Monday-Wednesday-Friday or Tuesday-Thursday). In Phase-3, lectures of each single day-sequence are then assigned to time-slots. Finally, in phase-4, labs and tutorials are assigned to days and time-slots. This decomposition allows the use of different techniques as appropriate to solve different phases. Currently different phases are solved using constraint programming and integer linear programming. The multi-phase architecture with the graphical user interface allows users to customize constraints as well as to generate new solutions that may incorporate partial solutions from previously generated feasible solutions

    CSCI 6990

    No full text
    There are a number of different aspects of software engineering and software development. Software engineering is not entirely about source code. Like any industrial product, a software product is also developed undergoing a disciplined process and engineering techniques. This course emphasizes on software process, in particular the agile development process, which has drawn tremendous interests and adoption in the industry over the last decade

    Evaluating the Conventional Wisdom in Clone Removal: A Genealogy-based Empirical Study

    No full text
    Clone management has drawn immense interest from the research community in recent years. It is recognized that a deep understanding of how code clones change and are refactored is necessary for devising effective clone management tools and techniques. This paper presents an empirical study based on the clone genealogies from a significant number of releases of six software systems, to characterize the patterns of clone change and removal in evolving software systems. With a blend of qualitative analysis, quantitative analysis and statistical tests of significance, we address a number of research questions. Our findings reveal insights into the removal of individual clone fragments and provide empirical evidence in support of conventional clone evolution wisdom. The results can be used to devise informed clone management tools and techniques.Ye
    corecore